<?php
namespace app\O_forum\controller;
use app\BaseController;
// use think\facade\Env;
// use think\facade\Config;
use think\facade\Db;
use think\facade\Filesystem;

class Index extends \app\BaseController
{
	// O 2类方法 渲染门户页面
		// 2类方法，渲染门户页面
	public function index($sid=0)
	{
		$sess=session('?uNick');
		// 数据查询
		$sec=$this->showSec();
		if($sid==0){
		// 加载最新的10个帖子(根据时间降序限制10条)
			// 多表查询
			$re=Db::view('o_mes','mtitle,munick,mcreateat,mid','msid=o_section.sid')
				->view('o_section','sname')
				->view('o_user','uimg','unick=o_mes.munick')
				->order('mcreateat','desc')
				->limit(10)
				->select();
		}
		$advmes=Db::view('adv','astop,aimg,apath,acheck')
  				->select();
  		$boxmes=Db::view('box','astop,aimg,apath,acheck,atitle,acontent')
  				->select();
  		// 渲染默认模板页面
  		return view('',['sec' => $sec,'mesRe' => $re,'advmes'=>$advmes,'boxmes'=>$boxmes]);
	}

	//检查sid的合法性
	public function checkSId($sid)
	{
		$re = Db::name('section')
			->field('sname')
			->where('sid',$sid)
			->find();
		if($re == null)
		{
			//非法的mid
			$this->error('你访问的页面不存在！','index');
		}else{
			return($re['sname']);
		}
	}
	// O 2类方法 渲染帖子列表页面
	public function view($sid = 0,$isAjax = 0,$listrows = 5)
	{
		$sid = input('sid');
		if ($sid == 0){
			$thisSec = "全部";
		}else{
			// 检验sid的合法性
			$thisSec = $this -> checkSid($sid);
		}
		//查询帖子
		$sec = $this -> showSec();
		// $re = Db::name('section')->field('sname')->where('sid',input('sid'))->find();
		// $thisSec = $re['sname'];
		// $mes = Db::name('mes') 
		// -> field('mtitle,munick,mcreateat,mid')
		// -> order('mcreateat','desc')
		// -> where('msid',1)
		// -> select();
		if ($isAjax == 0) {
			if ($sid == 0) {
				// 查询指定板块的帖子
				$mes = Db::view('mes','mtitle,munick,mcreateat,mid,msid')
					->view('user','uimg','mes.munick=user.unick')
					-> order('mcreateat','desc')
					// -> select();
					// ->paginate(10);
					-> paginate(['list_rows' => $listrows,'query' => request()->param()]);
			}else{
				// 查询指定板块的帖子
				$mes = Db::view('mes','mtitle,munick,mcreateat,mid,msid')
					->view('user','uimg','mes.munick=user.unick')
					-> order('mcreateat','desc')
					-> where('msid',input('sid'))
					// -> select();
					// ->paginate(10);
					-> paginate(['list_rows' => $listrows,'query' => request()->param()]);
			}
			//分页变量
			$page = $mes->render();
			//记录集的记录数
			$total = $mes->total();
			// 渲染面面
			return view('view',['sec'=>$sec,'mes'=>$mes,'thisSec'=>$thisSec,'page'=>$page,'total'=>$total,'listrows'=>$listrows]);
		}else{
			$listrows  = input("str1");
			if ($sid == 0) {
			// 查询指定板块的帖子
			$mes = Db::view('mes','mtitle,munick,mcreateat,mid,msid')
				->view('user','uimg','mes.munick=user.unick')
				-> order('mcreateat','desc')
				// -> select();
				// ->paginate(10);
				-> paginate(['list_rows' => $listrows,'query' => request()->param()]);
			}else{
			// 查询指定板块的帖子
			$mes = Db::view('mes','mtitle,munick,mcreateat,mid,msid')
				->view('user','uimg','mes.munick=user.unick')
				-> order('mcreateat','desc')
				-> where('msid',input('sid'))
				// -> select();
				// ->paginate(10);
				-> paginate(['list_rows' => $listrows,'query' => request()->param()]);
			}
			//分页变量
			$page = $mes->render();
			//记录集的记录数
			$total = $mes->total();
			// 渲染面面
			return view('viewlist',['sec'=>$sec,'mes'=>$mes,'thisSec'=>$thisSec,'page'=>$page,'total'=>$total,'listrows'=>$listrows]);
		}
	}

	
	
	// O 2类方法 渲染发帖页面
	public function post()
	{
		//检查登录状态
		$this->check();
		// 渲染页面
		$thisSec = $this->checkSId(input('sid'));
		$sec = $this -> showSec();

		
		// 渲染页面
		return view('',['sec'=>$sec,'thisSec'=>$thisSec]);
	}
	
	public function checkMId($mid)
	{
		$re = Db::name('mes')
		      ->where('mid',$mid)
			  ->find();
		if($re == null)
		{
			$this->error('你访问的页面不存在！','index');
		}
	}
	
	// O 2类方法 渲染帖子详细页
	public function detail(){
		$sec = $this -> showSec();
		$this ->checkMId(input('mid'));
		$mes = Db::view('mes','mtitle,mcontent,mcreateat,munick,mid')
					   ->view('user','uimg','mes.munick = user.unick','left')
					   ->view('section','sname','mes.msid = section.sid','left')
					   ->where('mid',input('mid'))
					   ->find();	
		$res = Db::view('res','rcontent,runick,rcreateat')
		               ->view('user','uimg','res.runick = user.unick')
					   ->order('rcreateat','desc')
					   ->where('rmid',input('mid'))
					   // -> select();
					   -> paginate(['list_rows' => input('str1',5),'query' => request()->param()]);
		
		//分页变量
		$page = $res->render();
		//记录集的记录数
		$total = $res->total();
		// 渲染页面
		return view('',['sec' => $sec, 'mes' => $mes,'res' => $res,'page'=>$page,'total'=>$total]);
	}
	
	public function response(){
		
			$this->check();
			
			// 准备写入的数据
			$data = [
				'rcontent' => input('rcontent'),
				'rmid' => input('mid'),
				'runick' => session('uName'),
				
			];
			$re = Db::name('res')->insert($data);
			// echo $re;
				
			
			// 提示跳转
			if ($re == 1){
				$this->success('评论成功！','index/detail?mid='.input('mid'));
			}else{
				$this->error('评论失败','index/detail?mid='.input('mid'));
				}
	}
	
	// O 2类方法 修改用户密码
	public function pa()
	{
		
		// 渲染页面
		return view();
	}
	
	// O 2类方法 上传头像
	public function me()
	{
		$this->check();
		// 渲染页面
		$sec = $this -> showSec();
		
		// 渲染页面
		return view('',['sec'=>$sec]);
		// 渲染页面
		// return view();
	}
	
	// O 2类方法 联系我们
	public function contact()
	{
		
		// 渲染页面
		return view();
	}
	
	// O 1类方法 执行发帖
	public function doPost()
	{
		// 检查登录
		$this->check();
		
		// 准备写入的数据
		$data = [
			'mcontent' => input('mcontent'),
			'mtitle' => input('mtitle'),
			'munick' => session('uName'),
			'mcreateat' => date('Y-m-d H:i:s',time()),
			'msid' => input('sid')
		];
		$re = Db::name('mes')->insert($data);
		// echo $re;
	
		
		// 提示跳转
		if ($re == 1){
			$this->success('发帖成功！',url('index/view',['sid'=>input('sid')]));
		}else{
			$this->error('发帖失败','index/post');
			}
		
	}
	
	// O 1类方法  执行回复帖子
	public function doRes()
	{
		
		//  提示跳转
		$this->success('帖子回复成功！','');
	}
	
	// O 1类方法 执行修改密码
	public function modiPa()
	{
		
		//  提示跳转
		$this->success('密码修改成功！','');
	}
	
	// O 1类方法 执行上传头像
	public function upMe()
	{
		$this->check();
		//获取表单上传的文件
		$img = request()->file('uimg');
		//文件上传
		$saveName = Filesystem::disk('public')->putFile('',$img);
		// echo $saveName                                                                                                               
		$fileName = app()->getRootPath() . 'public/static/O_forum/portrait/' . $saveName;
		// 先判断文件不存在，提示跳转
		if(!file_exists($fileName)){
			$this->error('文件上传失败，请稍后再试！');
		}
		// 组织更新的查询构造器
		$upImg = Db::name('user')
			->where('unick',session('uName'))
			->update(['uimg' => $saveName]);
		// 判断更新是否成功
		if($upImg == 1){
		// 成功，提示跳转
			// 删除用户久头像，注：非默认头像
			if (strlen(session('uImg')) > 8){
				$oldFile = app()->getRootPath() . 'public/static/O_forum/portrait/' .session('uImg');
				unlink($oldFile);
			}
			session('uImg',$saveName);
			$this->success('头像更新成功！','index/index');
		}else{
		// 失败，提示跳转
			// 删除新上传文件
			unlink($fileName);
			$this->error('头像更新失败，请稍后再试！');
		}
	}
	

}
